#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "ProcessMonitor.h"
#include "ScreenCapture.h"
#include "MarkedGameManager.h"
#include "headers/AuthClient.h"
#include "headers/EmailSender.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    // 开始监控按钮点击
    void onStartMonitorClicked();
    // 停止监控按钮点击
    void onStopMonitorClicked();
    // 截屏完成后更新表格
    void onCaptureFinished(const QString &screenshotPath);
    // 进程信息更新后刷新表格
    void onAllProcessUpdated(const QList<ProcessInfo> &processList);
    // 标记为游戏按钮点击
    void onMarkAsGameBtnClicked();
    // 刷新进程选择下拉框
    void refreshProcessSelectionCombo(const QList<ProcessInfo> &processList);

private:
    Ui::MainWindow *ui;
    ProcessMonitor *processMonitor;       // 进程监控器
    ScreenCapture *screenCapture;         // 截屏工具
    MarkedGameManager *markedGameManager; // 标记游戏管理器
    AuthClient *m_authClient;             // 认证客户端
    EmailSender *m_emailSender;           // 邮件发送器
    void initMonitorSystem();             // 登录成功后初始化监控系统
};

#endif // MAINWINDOW_H
